搭建远程 Java开发环境
VSCode 远程连接
安装远程连接插件
然后就是 ssh 连接,配置公钥密钥免密登陆就不细说了
配置服务器
因为常常需要对 api 进行调试,所以这里使用 nginx 配置一个虚拟主机,专门用来做测试接口
# 转发 80 端口到 https
server
{
if ($host = test.alsritter.icu) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name test.alsritter.icu;
return 404; # managed by Certbot
}
# 配置测试项目接口
server
{
server_name test.alsritter.icu;
gzip on;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/alsritter.icu/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/alsritter.icu/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
注意,这里使用了 SSL 别忘了要重新申请下子域名
certbot --nginx
# 申请完成后重启下 nginx
nginx -s reload
安装 JDK
wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz
# 解压
tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz
# 或者使用这个版本的
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/11.0.8%2B10/openlogic-openjdk-11.0.8%2B10-linux-x64.tar.gz
# 解压
tar -zxvf openlogic-openjdk-11.0.8+10-linux-x64.tar.gz
配置环境变量
$ vim ~/.bashrc
# 末尾增加如下内容(根据自己jdk目录修改):
export JAVA_HOME=/usr/local/jdk/jdk-11
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
# 注:
# 修改所有用户的环境变量:/etc/profile文件
# 只修改root用户的环境变量:~/.bashrc文件
$ source ~/.bashrc # 使配置文件生效
检查是否安装成功
注意,如果运行着多个终端,需要重启其它的终端才能检查到环境变量变化了(或者直接在别的终端执行这个 source ~/.bashrc
命令) ,且不用使用 ~/.bash_profile
具体原因看 Linux 配置环境变量那篇笔记
配置远程 Maven 仓库
先安装一下 Maven
wget https://apache.website-solution.net/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# 解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz
同上配置环境变量
export JAVA_HOME=/usr/local/jdk/jdk-11
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
export M2_HOME=/home/alsritter/JavaTool/apache-maven-3.6.3/
export MAVEN_HOME=${M2_HOME}
export MAVEN_BIN=${M2_HOME}/bin/
export PATH=${PATH}:${MAVEN_HOME}:${MAVEN_BIN}
检查是否安装好
mvn -v
然后修改下配置文件
<localRepository>/home/alsritter/JavaTool/mavenRepo</localRepository>
<!-- .... -->
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf>
<name>aliyun Maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
配置 Java环境插件
安装这个 Java 插件包,它会自动把 Java环境用到的插件都装上
首先配置这个核心插件
Red Hat 的 Java 插件是每个 VS Code Java 用户的必装插件。对 Maven/Gradle 项目的基本支持、代码格式化,代码重构、代码片段、语法高亮、代码自动补全等等核心功能,都在这个插件中。
值得注意,这些插件设置是有远程设置和本地设置之分的
需要配置这个远程的配置文件
{
"java.home": "/usr/local/jdk/jdk-11",
// "java.configuration.runtimes": [
// {
// "name": "JavaSE-11",
// "path": "/usr/local/jdk/jdk-11",
// },
// ],
"remote.autoForwardPortsSource": "output",
"spring-boot.ls.java.home": "/usr/local/jdk/jdk-11"
}
Debug 插件
调试对于每一个语言来说当然是必不可少的功能。Debugger for Java 除了提供 Launch/Attach、断点/条件断点、Step In/Out/Over、Callstacks 这些基本功能,还支持 Logpoints、Hot Code Replace 等高级功能,使得调试 Java 项目如丝般顺滑。
单元测试插件
Java Test Runner 对主流的测试框架 JUnit 和 TestNG 都有着很好的支持。在 Test Explorer 中,可以方便地查看所有测试用例、运行/调试测试代码、查看测试报告。如下看
Maven 插件
项目地址 Maven for Java
这个插件可以显示 Maven 插件
这个需要配置一下
"maven.executable.path": "/home/alsritter/JavaTool/apache-maven-3.6.3/bin/mvn"
检查错误
插件地址 vscode-checkstyle
这个插件基本上是必装的
能够自动修复一些 bug
SonarLint 插件
插件地址 SonarLint for Visual Studio Code
相信用过 IDEA 的都知道这个插件,这里就不作解释了
但是这个插件和 Lombok 插件有些冲突,如下所示,所以需要关掉一些规则(遇到时 ctrl 加回车有提示)
项目管理插件
这个插件主要用来看当前 Java 项目用到的依赖(可以直接显示 Maven的)
Spring 相关插件
安装 Spring 大礼包插件
详情参考 spring-projects/sts4
辅助性的插件
YAML 插件
插件地址 YAML
按着 Ctrl 键点击 yml 属性可以自动跳转到对应的元文件定义里面
这个插件要使用 Red Hat 的
XML 插件
插件地址 XML Language Support by Red Hat
Lombok 插件
MyBatis 插件
TODO 插件
效果如下
IDEA 快捷键插件
项目地址 IntelliJ IDEA Key Bindings for Visual Studio Code
如果不习惯 VsCode 的快捷方式,可以使用这个插件
使用工作区整理插件
上面配置了一堆插件,会显得 Vscode 十分臃肿,这时就可以使用工作区来整理它们
找到当前插件,若是 Java 插件集合建议打开其扩展包。
有两个选项
第一个选项“禁用”为你的用户设置 第二个选项“禁用(工作区)”为工作区设置
选择“禁用(工作区)”。
此设置会只应用到当前工作区下,不会影响用户设置和其他工作区的设置,文件夹无此设置。
然后会看到当前工作区启用了哪些插件
IDEA
参考资料 jetbrains 家的 IDE 有没有类似 vscode remote 这样的功能? V2EX 参考资料 IDEA Full remote mode
IDEA 好像没有直接 ssh 连接上服务器直接改代码的功能,所以得通过 FTP 进行文件同步的方式来同步代码
注意:JB 系列的 remote 和 vscode 的不一样
- JB 系列是调用远程的命令进行调试和编译,同时用 rsync 把远程代码同步到本地,在本地对代码进行操作
- vscode 是代码不落到本地,在远程架一个 headless vscode,和本地仅通信最基本的 UI 需要的信息
他们的区别在于,vscode 的模式下,可以达到代码不进入本地电脑的企业级安全性要求,且 code intellisense 等基于代码分析的能力在远端进行,可以享用高配置的 server 的性能,简单来说,JB 的所谓 remote mode,本质还是同步,而 vscode remote 是真正的云开发
TODO: 待更新...